// 拦截成功的处理器
import {
  CallHandler, // 服务器返回的给客户端的响应操作使用这个实例里面的方法
  ExecutionContext, // 一个实例，与守卫完全相同的一个对象
  Injectable, // 拦截器
  NestInterceptor,
} from '@nestjs/common';
import { map, Observable } from 'rxjs';

interface Response<T> {
    data: T
}
@Injectable()
export class TransformInterceptor<T> implements NestInterceptor<T, Response<T> > {
  intercept(context: ExecutionContext, next: CallHandler): Observable<any> {
    return next.handle().pipe(
      map((data) => {
        let msg = data.message
        // 如果有返回成功的提示信息 msg 就放到msg中，然后删除data中的 msg
        if(msg){
            delete data.message
        }
        return {
          data,
          code: 200,
          msg: msg?msg:'请求成功',
        };
      }),
    );
  }
}
